<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Whisper: IEmbeddingEngine Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Whisper
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#pri-methods">Private Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">IEmbeddingEngine Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="IEmbeddingEngine" -->
<p>Embedding engine base class.  
 <a href="classIEmbeddingEngine.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="embedding__engine_8h_source.html">embedding_engine.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for IEmbeddingEngine:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classIEmbeddingEngine.png" usemap="#IEmbeddingEngine_map" alt=""/>
  <map id="IEmbeddingEngine_map" name="IEmbeddingEngine_map">
<area href="classCCryptoEngine.html" title="Implementation of a crypto engine." alt="CCryptoEngine" shape="rect" coords="258,56,420,80"/>
<area href="classCLSBEmbeddingEngine.html" title="implementation of the LSB embedding algorithm." alt="CLSBEmbeddingEngine" shape="rect" coords="774,56,936,80"/>
<area href="classCAdvAmplitudeScrambling.html" alt="CAdvAmplitudeScrambling" shape="rect" coords="0,112,162,136"/>
<area href="classCAmplitudeScrambling.html" alt="CAmplitudeScrambling" shape="rect" coords="172,112,334,136"/>
<area href="classCFrequencyScrambling.html" title="Encrypts and decrypts audio samples using the Frequency Permutation algorithm." alt="CFrequencyScrambling" shape="rect" coords="344,112,506,136"/>
<area href="classCNullCryptoEngine.html" alt="CNullCryptoEngine" shape="rect" coords="516,112,678,136"/>
<area href="classCDumpEmbeddingEngine.html" title="file dump wrapper" alt="CDumpEmbeddingEngine" shape="rect" coords="688,112,850,136"/>
<area href="classCRandEmbeddingEngine.html" title="implementation of the lsb embedding where random lsb&#39;s are taken to hide the data bits..." alt="CRandEmbeddingEngine" shape="rect" coords="860,112,1022,136"/>
</map>
 </div></div>

<p><a href="classIEmbeddingEngine-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#adc2c704198f68e2d23a713f058122f34">IEmbeddingEngine</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a34cd1e82cd29a489109593e8f7ff3be4">~IEmbeddingEngine</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#abfb86e00c511112aec0cfa1acfb571c8">setPropertiesReader</a> (<a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a> *pPropertiesReader)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a72cad808a0f21ab863dd3e4eda653374">getPropertiesReader</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a58c6fd3df13135b91956c42b2f3519a6">getIniSectionName</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">get the abbreviation for the properties reader  <a href="#a58c6fd3df13135b91956c42b2f3519a6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a0d4c7dd4a9cef7524a016831042094fe">embedIntoSamples</a> (int8_t *pSamples, unsigned int pCount, unsigned int pLeak)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hook call for glue code  <a href="#a0d4c7dd4a9cef7524a016831042094fe"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a508ca9bd6283cd40250a3cbee9a79778">embedIntoSamples</a> (uint8_t *pSamples, unsigned int pCount, unsigned int pLeak)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#aab1d65b5129a308098acab5468e51e3f">embedIntoSamples</a> (int16_t *pSamples, unsigned int pCount, unsigned int pLeak)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a12b321a2caf8b08d4435e936bd7fa446">embedIntoSamples</a> (uint16_t *pSamples, unsigned int pCount, unsigned int pLeak)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#aa778b0012f0b6d907c7284ce367d16ee">embedIntoSamples</a> (double *pSamples, unsigned int pCount, unsigned int pLeak)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#afdd4eb903fce7b7ec14ed171c0df64d7">extractFromSamples</a> (int8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">hook call for glue code  <a href="#afdd4eb903fce7b7ec14ed171c0df64d7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a952b08b4f543a8bdd3ca53e46c16b087">extractFromSamples</a> (uint8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a476e58ee9839c3d29cf308b056d2b0d3">extractFromSamples</a> (int16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#af077ceeacbe720f5b588950c4140a096">extractFromSamples</a> (uint16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a5d7b877de16fb5e8479ce83f75b88ae1">extractFromSamples</a> (double *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a17d63e5e13b91c9121444833cf5de626">shutdown</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#acfc1adf5ae7e28332f825c6f2ae056d2">changeSettings</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#aaeb36f7905d85f9df65b7ba565419888">getNumRequiredSamples</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">determine number of processible samples  <a href="#aaeb36f7905d85f9df65b7ba565419888"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <br class="typebreak"/>
<a class="el" href="namespaceNAudioFormats.html#a0f5b4d2b68d4ba2b34bac333d4f5f808">NAudioFormats::ESamplesFormat</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#af1afa2bc32d63b5505a27da584c4a474">getSamplesFormat</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">determine whether samples should be converted to double before handed over to an embedding engine  <a href="#af1afa2bc32d63b5505a27da584c4a474"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#a7da6f0fa30423edc18aa7beafa47801a">mPropertiesReader</a></td></tr>
<tr><td colspan="2"><h2><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#ae4167c2ac833d919fe202f0ce72f6367">IEmbeddingEngine</a> (const <a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classIEmbeddingEngine.html#ab1a0ad555daf0b82027ef6c3aba980d9">operator=</a> (const <a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a> &amp;)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Embedding engine base class. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>gpitsch and rpoisel </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="adc2c704198f68e2d23a713f058122f34"></a><!-- doxytag: member="IEmbeddingEngine::IEmbeddingEngine" ref="adc2c704198f68e2d23a713f058122f34" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">IEmbeddingEngine::IEmbeddingEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="a34cd1e82cd29a489109593e8f7ff3be4"></a><!-- doxytag: member="IEmbeddingEngine::~IEmbeddingEngine" ref="a34cd1e82cd29a489109593e8f7ff3be4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual IEmbeddingEngine::~IEmbeddingEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ae4167c2ac833d919fe202f0ce72f6367"></a><!-- doxytag: member="IEmbeddingEngine::IEmbeddingEngine" ref="ae4167c2ac833d919fe202f0ce72f6367" args="(const IEmbeddingEngine &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">IEmbeddingEngine::IEmbeddingEngine </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="acfc1adf5ae7e28332f825c6f2ae056d2"></a><!-- doxytag: member="IEmbeddingEngine::changeSettings" ref="acfc1adf5ae7e28332f825c6f2ae056d2" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::changeSettings </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>called by the protocol engine upon settings change (e.g. change of embedding parameters) </p>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#ae509c020577b0be6b45f63a78304314f">CCryptoEngine</a>, <a class="el" href="classCFrequencyScrambling.html#a5b7467e7a2d40a1643186b7066c1fdb9">CFrequencyScrambling</a>, <a class="el" href="classCAdvAmplitudeScrambling.html#a3c8ebe9537d5b48b8fc84c9b7730e851">CAdvAmplitudeScrambling</a>, <a class="el" href="classCNullCryptoEngine.html#aeae9b7fbed7186ccd34a533ccd03f0e6">CNullCryptoEngine</a>, <a class="el" href="classCAmplitudeScrambling.html#aa2113755623a41093e74d8648069c94f">CAmplitudeScrambling</a>, <a class="el" href="classCDumpEmbeddingEngine.html#aeef339ae1eef5123296c82ecb41c86d9">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#aca6150436ba357982b39ab7a56e6b0b7">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#ad7153a1344e4fca0b855851e0c346596">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a0d4c7dd4a9cef7524a016831042094fe"></a><!-- doxytag: member="IEmbeddingEngine::embedIntoSamples" ref="a0d4c7dd4a9cef7524a016831042094fe" args="(int8_t *pSamples, unsigned int pCount, unsigned int pLeak)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">int8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>hook call for glue code </p>
<p>called by the voip phone application to embed data into the sample before sending a packet </p>
<dl class="note"><dt><b>Note:</b></dt><dd>this implicitly reads the data to be embedded from the <a class="el" href="classIStegIO.html" title="abstraction layer of a steg payload data source and sink">IStegIO</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>&gt;0 for success, 0 for EOF and &lt;0 for an error </dd></dl>

<p>Implemented in <a class="el" href="classCDumpEmbeddingEngine.html#a198b502e3a71e21c7907961697772f9b">CDumpEmbeddingEngine</a>, <a class="el" href="classCCryptoEngine.html#afa42453df8be9a392303d70b4fdef7ce">CCryptoEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#a4d508780f5f727e820baa98a5da1fa97">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#a54803d6a4f5d537ca5065271623ab4d5">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a508ca9bd6283cd40250a3cbee9a79778"></a><!-- doxytag: member="IEmbeddingEngine::embedIntoSamples" ref="a508ca9bd6283cd40250a3cbee9a79778" args="(uint8_t *pSamples, unsigned int pCount, unsigned int pLeak)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a56c0cce3de7d609dc7b9d02aedaf269c">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a35b0c811b3f2cda63759997e6176284d">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#ae132792ad4cf59e3a0b966f92fd4b43b">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#ad71f0b7abb7d3a4f00fbed8e9ae1330f">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="aab1d65b5129a308098acab5468e51e3f"></a><!-- doxytag: member="IEmbeddingEngine::embedIntoSamples" ref="aab1d65b5129a308098acab5468e51e3f" args="(int16_t *pSamples, unsigned int pCount, unsigned int pLeak)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">int16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a4d593436533e1181ff78aee0e5a180cf">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a1c6a14a4f5ff80770cc6554ed96f995b">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#a53aafd5283ecaddd90c0763eeab89cf9">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#aac2dc51c8a5c42fb3b013fb265ea546b">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a12b321a2caf8b08d4435e936bd7fa446"></a><!-- doxytag: member="IEmbeddingEngine::embedIntoSamples" ref="a12b321a2caf8b08d4435e936bd7fa446" args="(uint16_t *pSamples, unsigned int pCount, unsigned int pLeak)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">uint16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a77d0b14647029fe24da5cf9a98722420">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a387b9f36c456685b132461d26682d3c8">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#af6e8a395a148d9847721654e6540efe2">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#a1168da3c69053df590dc9f0c08c4f16d">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="aa778b0012f0b6d907c7284ce367d16ee"></a><!-- doxytag: member="IEmbeddingEngine::embedIntoSamples" ref="aa778b0012f0b6d907c7284ce367d16ee" args="(double *pSamples, unsigned int pCount, unsigned int pLeak)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::embedIntoSamples </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#ad7bd16eab935a6bb6394023a7d002a1c">CCryptoEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#a4108f20e47567007441ba8943f5e4b1b">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="afdd4eb903fce7b7ec14ed171c0df64d7"></a><!-- doxytag: member="IEmbeddingEngine::extractFromSamples" ref="afdd4eb903fce7b7ec14ed171c0df64d7" args="(int8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">int8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>hook call for glue code </p>
<p>called by the voip phone application to extract data from the sample after receiving a packet </p>
<dl class="note"><dt><b>Note:</b></dt><dd>this implicitly writes the extracted data to the <a class="el" href="classIStegIO.html" title="abstraction layer of a steg payload data source and sink">IStegIO</a></dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pSamples</td><td>samples to be modified </td></tr>
    <tr><td class="paramname">pCount</td><td>number of samples </td></tr>
    <tr><td class="paramname">pLeak</td><td>number of samples not used between last and current call </td></tr>
    <tr><td class="paramname">pInBuffer</td><td>how many samples are left in the buffer. If no extra thread is executed for extraction this parameter is always 0.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success, &gt;0 for success and discard of samples for next call, &lt;0 for an error </dd></dl>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a987c8e885306c46278154850f9d08329">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#af3fc1af5cec85b52f1166e6eeeecf918">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#acaebe471ecb2ca61fefa93c623effcee">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#ad2f2ad1c4af1efd19d7f9f324e5068b4">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a952b08b4f543a8bdd3ca53e46c16b087"></a><!-- doxytag: member="IEmbeddingEngine::extractFromSamples" ref="a952b08b4f543a8bdd3ca53e46c16b087" args="(uint8_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#aedf491be2045c9e0eb328a7601aeb2b8">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a4518078ba33c8b225f2658b05b398201">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#a70d5c13e20918537ca5fc41e2b189174">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#a64761d9c4036823d4a38e8e054c7acd9">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a476e58ee9839c3d29cf308b056d2b0d3"></a><!-- doxytag: member="IEmbeddingEngine::extractFromSamples" ref="a476e58ee9839c3d29cf308b056d2b0d3" args="(int16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">int16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#af2c1e3584afe76a542d710ced83d429d">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a313caadd6577e4fb04b386b8bc5d9fc0">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#a08705592c817d8b2854d80752f594a34">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#a68c5bc5b00170e6ac949b5fb7b23321d">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="af077ceeacbe720f5b588950c4140a096"></a><!-- doxytag: member="IEmbeddingEngine::extractFromSamples" ref="af077ceeacbe720f5b588950c4140a096" args="(uint16_t *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">uint16_t *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#ac5923a7e5647d09aead6e2062fdca5d9">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a391b8f0784a29df9c3834f5cd4e6d51a">CDumpEmbeddingEngine</a>, <a class="el" href="classCLSBEmbeddingEngine.html#a4c62d1ed64e8acb27781d7765e4fa0eb">CLSBEmbeddingEngine</a>, and <a class="el" href="classCRandEmbeddingEngine.html#af0b434b1ee99a668bf715f3dde97dcbe">CRandEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a5d7b877de16fb5e8479ce83f75b88ae1"></a><!-- doxytag: member="IEmbeddingEngine::extractFromSamples" ref="a5d7b877de16fb5e8479ce83f75b88ae1" args="(double *pSamples, unsigned int pCount, unsigned int pLeak, unsigned int pInBuffer)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::extractFromSamples </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>pSamples</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pCount</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pLeak</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pInBuffer</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a09d61a9930a53ca76c1b940afb1aff88">CCryptoEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#afd9e25289d4571a53e55ef0c8648eb09">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a58c6fd3df13135b91956c42b2f3519a6"></a><!-- doxytag: member="IEmbeddingEngine::getIniSectionName" ref="a58c6fd3df13135b91956c42b2f3519a6" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::string IEmbeddingEngine::getIniSectionName </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get the abbreviation for the properties reader </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the abbreviation for the properties reader </dd></dl>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a5fe78aa78cd14bbf52e8c897e128af49">CCryptoEngine</a>, <a class="el" href="classCDumpEmbeddingEngine.html#a0cb2379747fdf07f5468ec53394bc002">CDumpEmbeddingEngine</a>, <a class="el" href="classCRandEmbeddingEngine.html#a96e54e0cb255a0cc5715ad7199256c76">CRandEmbeddingEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#a81bd5d82390a7870fefbfdde94cd474b">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="aaeb36f7905d85f9df65b7ba565419888"></a><!-- doxytag: member="IEmbeddingEngine::getNumRequiredSamples" ref="aaeb36f7905d85f9df65b7ba565419888" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int IEmbeddingEngine::getNumRequiredSamples </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>determine number of processible samples </p>
<p>called by the samples distributor to determine the number of samples which can be processed by the embedding engine; this can be a dynamic value or constant (e.g. for LSB, or echo-hiding) all the time</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of processible samples </dd></dl>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#abe276f3773c39536ba0ce3c3e3185268">CCryptoEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#a2e474f9ad7431541adc5d810e9d800ff">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="a72cad808a0f21ab863dd3e4eda653374"></a><!-- doxytag: member="IEmbeddingEngine::getPropertiesReader" ref="a72cad808a0f21ab863dd3e4eda653374" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a> * IEmbeddingEngine::getPropertiesReader </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>get the CPropertiesReader which is used to handle config files for this embedding engine</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the corresponding CPropertiesReader </dd></dl>

</div>
</div>
<a class="anchor" id="af1afa2bc32d63b5505a27da584c4a474"></a><!-- doxytag: member="IEmbeddingEngine::getSamplesFormat" ref="af1afa2bc32d63b5505a27da584c4a474" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="namespaceNAudioFormats.html#a0f5b4d2b68d4ba2b34bac333d4f5f808">NAudioFormats::ESamplesFormat</a> IEmbeddingEngine::getSamplesFormat </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>determine whether samples should be converted to double before handed over to an embedding engine </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>ORIGINAL or MODIFIED </dd></dl>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a0b8e86c1fa977f571de690f268fa4087">CCryptoEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#a882686345156024eea079420bc780345">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<a class="anchor" id="ab1a0ad555daf0b82027ef6c3aba980d9"></a><!-- doxytag: member="IEmbeddingEngine::operator=" ref="ab1a0ad555daf0b82027ef6c3aba980d9" args="(const IEmbeddingEngine &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a>&amp; IEmbeddingEngine::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classIEmbeddingEngine.html">IEmbeddingEngine</a> &amp;&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="abfb86e00c511112aec0cfa1acfb571c8"></a><!-- doxytag: member="IEmbeddingEngine::setPropertiesReader" ref="abfb86e00c511112aec0cfa1acfb571c8" args="(CPropertiesReader *pPropertiesReader)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void IEmbeddingEngine::setPropertiesReader </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a> *&#160;</td>
          <td class="paramname"><em>pPropertiesReader</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>pass a reference to a PropertiesReader object to this embedding engine for handling config files</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">pPropertiesReader</td><td>pointer to a PropertiesReader object instanciated by the EngineFactory </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a17d63e5e13b91c9121444833cf5de626"></a><!-- doxytag: member="IEmbeddingEngine::shutdown" ref="a17d63e5e13b91c9121444833cf5de626" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void IEmbeddingEngine::shutdown </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>called from the engine factory before destroying the handle </p>

<p>Implemented in <a class="el" href="classCCryptoEngine.html#a3e15dd4a337b2b5d1d74cc4b0f923cef">CCryptoEngine</a>, and <a class="el" href="classCLSBEmbeddingEngine.html#a0890214dd225aa09ba755459d686c2ce">CLSBEmbeddingEngine</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a7da6f0fa30423edc18aa7beafa47801a"></a><!-- doxytag: member="IEmbeddingEngine::mPropertiesReader" ref="a7da6f0fa30423edc18aa7beafa47801a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="properties__reader_8h.html#a67847fd00cb49d80dd45f61722eb9a43">CPropertiesReader</a>* <a class="el" href="classIEmbeddingEngine.html#a7da6f0fa30423edc18aa7beafa47801a">IEmbeddingEngine::mPropertiesReader</a><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>link to the PropertiesReader object and hence to the config file </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="embedding__engine_8h_source.html">embedding_engine.h</a></li>
<li><a class="el" href="embedding__engine_8cxx.html">embedding_engine.cxx</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 25 2012 22:00:47 for Whisper by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
